// 2.1.4 循环-循环类型-嵌套循环
/**
 * 有的时候，可能需要多次执行同一块代码。一般情况下，语句是顺序执行的：函数中的第一个语句先执行，接着是第二个语句，依此类推。
 * 编程语言提供了允许更为复杂的执行路径的多种控制结构。
 * 循环语句允许我们多次执行一个语句或语句组
 * 
 * 循环类型
 * 类型 while 循环
 * 描述 当给定条件为真时，重复语句或语句组。它会在执行循环主体之前测试条件。
 * 
 * 类型 for 循环
 * 描述 多次执行一个语句序列，简化管理循环变量的代码。
 * 
 * 类型 do...while 循环
 * 描述 除了它是在循环主体结尾测试条件外，其他与 while 语句类似。
 * 
 * 类型 嵌套循环
 * 描述 您可以在 while、for 或 do..while 循环内使用一个或多个循环。
 * 
 * ------------------
 * 嵌套循环
 * 一个循环内可以嵌套另一个循环。C++ 允许至少 256 个嵌套层次。
 * 关于嵌套循环有一点值得注意，您可以在任何类型的循环内嵌套其他任何类型的循环。比如，一个 for 循环可以嵌套在一个 while 循环内，反之亦然。
*/

#include <iostream>

int main(void)
{
  // 一个嵌套的 for 循环来查找 2 到 100 中的质数；

  // 质数：质数又称素数。一个大于1的自然数，除了1和它自身外，不能被其他自然数整除的数叫做质数；否则称为合数（规定1既不是质数也不是合数）

  int i, j;
  int num = 0;
  for (i = 2; i <= 100; i++)
  {
    bool flag = true;
    for (j = 2; j < i; j++)
    {
      if (i % j == 0)
      {
        flag = false;
        break;
      }
    }
    if (flag)
    {
      num++;
      std::cout << i << "是质数" << std::endl;
    }
  }

  std::cout << "2~100之间一共有" << num << "个质数" << std::endl;
  printf("----------end-----------\n");
  return 0;
}